import axios from 'axios';
import { showMessage } from "./status";   // 引入状态码文件
import { ElMessage } from 'element-plus'  // 引入el 提示框，这个项目里用什么组件库这里引什么

// 设置接口超时时间
axios.defaults.timeout = 60000;

// 请求地址，这里是动态赋值的的环境变量，下一篇会细讲，这里跳过
// @ts-ignore
axios.defaults.baseURL = import.meta.env.VITE_API_DOMAIN;

//http request 拦截器
axios.interceptors.request.use(
  config => {
    // 配置请求头
    // config.headers = {
    //   //'Content-Type':'application/x-www-form-urlencoded',   // 传参方式表单
    //   'Content-Type':'application/json;charset=UTF-8',        // 传参方式json
    //   'token':'80c483d59ca86ad0393cf8a98416e2a1'              // 这里自定义配置，这里传的是token
    // };
    config.headers.set("Content-Type", "application/json;charset=UTF-8")
    config.headers.set("token", "80c483d59ca86ad0393cf8a98416e2a1")
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);

//http response 拦截器
axios.interceptors.response.use(
  response => {


    return response;
  },
  error => {
    const { response } = error;
    console.info("response==", response)
    // console.info("response.data.code==", response.data.code)
    if (response) {
      console.info("-----")
      if (response.data.code != 0) {
        // showMessage(response.status);
        // ElMessage.warning(response.data.errMsg);
      }
      // 请求已发出，但是不在2xx的范围
      ElMessage.warning(showMessage(response.status));           // 传入响应码，匹配响应码对应信息
      return Promise.reject(response.data);
    } else {
      console.info("-----2")
      ElMessage.warning('网络连接异常,请稍后再试!');
      
    }
  }
);

// 封装 GET POST 请求并导出
export function request(url = '', params = {}, type = 'POST') {
  console.info("type:", type)
  //设置 url params type 的默认值
  return new Promise((resolve, reject) => {
    let promise
    if (type.toUpperCase() === 'GET') {
      promise = axios({
        url,
        params
      }).then((res) => {
        console.info("1ss======", res)
        resolve(res)
      }).catch(err => {
        console.info("error======", err)
        reject(err)
      })
    } else if (type.toUpperCase() === 'POST') {
      promise = axios({
        method: 'POST',
        url,
        data: params
      }).then((res) => {
        console.info("2ss======", res)
        resolve(res)
      }).catch(err => {
        console.info("error======", err)
        reject(err)
      })
    }
    //处理返回
    // promise.then((res)=>{
    //   console.info("======",res)
    //   resolve(res)
    // }).catch(err=>{
    //   reject(err)
    // })
  })
}